home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / Developer Essentials Jul 90 / Programming / MPW Interfaces & Libraries 3.1 / AIncludes / FSPrivate.a < prev    next >
Encoding:
Text File  |  1989-10-13  |  17.2 KB  |  490 lines  |  [TEXT/MPS ]

  1. ; Version: 1.03
  2. ; Created: Monday, January 9, 1989 at 5:36:34 PM
  3. ;
  4. ; File: FSPrivate.a
  5. ;
  6. ; Assembler Interface to the Macintosh Libraries
  7. ; Copyright Apple Computer, Inc. 1984-1988
  8. ; All Rights Reserved
  9. ;
  10. ;--------------------------------------------------------------------
  11. ;
  12. ; The following information was formerly in "private" files that were
  13. ; not released to the general developer community.
  14. ;
  15. ; The information in this file is not needed for normal application
  16. ; development. These equates and macros were necessary for development
  17. ; of the Macintosh ToolBox and Operating System, and are likely to be
  18. ; dependent on their current implementation. Use of any information
  19. ; in this file is likely to cause your software to fail on future
  20. ; versions of Macintosh system software or hardware.
  21. ;
  22. ; Apple Developer Support will not support any use of the following
  23. ; information.
  24. ;
  25. ; In order to prevent any "accidental" use of this information, it has
  26. ; been disabled using the conditional-assembly variable defined below.
  27. ; If you change this to a non-zero value, you're on your own.
  28. ;--------------------------------------------------------------------
  29.  
  30.  
  31.                 IF            (&TYPE('FSPNonPortable') = 'UNDEFINED') THEN
  32. FSPNonPortable    EQU         0
  33.                 ENDIF
  34. HFSDebug        EQU         0                        ; include HFS debug traps if 1
  35.  
  36.  
  37.                 IF            FSPNonPortable THEN     ;begin exclusion of private information
  38. ; Function: This file contains the complete File System equates for MFS and HFS. It is
  39. ; an extension of the equates defined by old FSEQU.a
  40.  
  41. ;
  42. ; Constant definitions
  43. ;
  44. btsPrBlk        EQU         12                        ; bits per block in volume map (FS volume)
  45. ; ExtendFile option flags
  46.  
  47. EFContig        EQU         1                        ; force contiguous allocation
  48. EFAll            EQU         0                        ; allocate all requested bytes or none
  49. kEFContig        EQU         2                        ; corresponding constants for MOVEQ
  50. kEFAll            EQU         1
  51.  
  52. ; TruncateFile option flags
  53.  
  54. TFTrunExt        EQU         0                        ; truncate to the extent containing new PEOF
  55. kTFTrunExt        EQU         1                        ; corresponding constants for MOVEQ
  56.                 MACRO                                ; HFS debugging halt trap
  57.                 _HFSDebug
  58.                 IF            HFSDebug THEN            ; only included when actually debugging
  59.                 IF            &Syslst[1]<>'' THEN
  60.                 DC.W        ($F000+&Syslst[1])        ; in case a trap sub-code is specified
  61.                 ELSE
  62.                 DC.W        ($A9FF)                 ; User break
  63.                 ENDIF
  64.                 ENDIF
  65.                 ENDM
  66.  
  67.                 MACRO                                ; HFS error halt trap
  68.                 _HFSDSErr
  69.                 _HFSDebug    &Syslst[1]                ; Pause first if debugging
  70.                 MOVEQ        #DSFSErr,D0             ; Error code = 27, Fatal File System Error
  71.                 _SysError                            ; Stop the engines
  72.                 ENDM
  73.  
  74.                 ENDIF                                ;end exclusion of private information
  75.  
  76. strtDir         EQU         2                        ; directory master block location (block #)
  77. bufSiz            EQU         512                     ; standard file system buffer size in bytes
  78. hdrSiz            EQU         10                        ; size of header prefixed to buffer
  79. bufModBit        EQU         7                        ; dirty bit in high byte of buf tag word
  80. bufFNum         EQU         -10                     ; offset from buf start to file number longword
  81. bufFlags        EQU         -6                        ; offset from buf start to file flags word
  82. bufFBlk         EQU         -4                        ; offset from buf start to file block word
  83. bufTag            EQU         -2                        ; offset from buf start to tag word
  84. nxFreeFN        EQU         16                        ; next free file number
  85. nxFreeDID        EQU         3                        ; next free directory id
  86. alBlkSize        EQU         512                     ; default allocation block size (1 sector, in bytes)
  87. clpSize         EQU         4*512                    ; default allocation clump size (in bytes)
  88.  
  89.  
  90. maxHFSTrap        EQU         17                        ; Highest TFS trap dispatch index
  91.  
  92.  
  93. ;_______________________________________________________________________
  94.  
  95. ; fixed location labels: (equivalent of zero page)
  96.  
  97.  
  98. hfsVars         EQU         $36A                    ; Start of TFS variables in RAM version
  99. ; (previously RgSvArea)
  100. hfsTmpSize        EQU         16                        ; Additional temporary space for TFS
  101. hfsStkLen        EQU         1280                    ; Allocate a decent-sized chunk of memory
  102. HFSStkTop        EQU         $36A                    ; Temporary location of pointer to top of Stack
  103. HFSStkPtr        EQU         $36E                    ; Temporary location of TFS Stack pointer
  104. WDCBsPtr        EQU         $372                    ; Working Directory queue header
  105. HFSFlags        EQU         $376                    ; Internal TFS flags
  106. DefVRefNum        EQU         $384                    ; Default volume's VRefNum (COULD BE WDRefNum!)
  107.  
  108. ;
  109. ; Flag bits in HFSFlags byte:
  110. ;
  111. hfsReq            EQU         0                        ; Set if request is specific to TFS
  112. dirCN            EQU         1                        ; Set if a CNode is a directory
  113. hfsContd        EQU         7                        ; Set if Async trap is continued
  114. noPMSP            EQU         6                        ; Set to disable PMSP completely (status flag)
  115. skipPMSP        EQU         5                        ; Set to skip PMSP setup (one-shot)
  116. SysCRefCnt        EQU         $377                    ; Usage count byte for system caches (number of vols)
  117. CacheFlag        EQU         $377                    ; cache usage count now used as cache flag
  118. CacheVars        EQU         $394
  119. cacheCom        EQU         $39C
  120. noRWIPBit        EQU         7
  121. diskRdBit        EQU         6
  122. SysBMCPtr        EQU         $378                    ; System-wide bitmap cache pointer
  123. SysVolCPtr        EQU         $37C                    ; System-wide volume cache pointer
  124. SysCtlCPtr        EQU         $380                    ; System-wide control cache pointer
  125. PMSPPtr         EQU         $386                    ; Pointer to list of directories on PMSP
  126. HFSDSErr        EQU         $392                    ; Final gasp - error that caused IOErr.
  127. HFSVarEnd        EQU         $394                    ; End of hfs variable area
  128. hfsStkOvf        EQU         99                        ; Deep trouble alert - HFS stack overflowed.
  129. CurDB            EQU         $340                    ; current directory block
  130. FSCallAsync     EQU         $342                    ; ONE BYTE FREE
  131. NewMount        EQU         $34A                    ; (1) used by MountVol to flag new mounts
  132. NoEject         EQU         $34B                    ; used by Eject and Offline
  133. DrMstrBlk        EQU         $34C                    ; master directory block in a volume
  134. ErCode            EQU         $3A2                    ; use this loc to report errors during async
  135. ; routines
  136. FSIOErr         EQU         $3DE                    ; last I/O error (NEXT WORD FREE)
  137. FSQueueHook     EQU         $3E2                    ; hook to capture all FS calls
  138. ExtFSHook        EQU         $3E6                    ; command done hook
  139. DskSwtchHook    EQU         $3EA                    ; hook for disk-switch dialog
  140. ReqstVol        EQU         $3EE                    ; ptr to VCB of off-line or ext fs volume
  141. FSVarEnd        EQU         $3F6                    ; end of file system variables
  142. fsVarLth        EQU         $B6
  143. fsClrWDLen        EQU         $A2                     ;length to clear in boot blocks
  144.  
  145.  
  146. ; Internal File System Error codes
  147. ;
  148. ; Cache errors
  149.  
  150. chNoBuf         EQU         1                        ; no free cache buffers (all in use)
  151. chInUse         EQU         2                        ; requested block in use
  152. chnotfound        EQU         3                        ; requested block not found
  153. chNotInUse        EQU         4                        ; block being released was not in use
  154.  
  155. ; FXM Internal error codes:
  156.  
  157. fxRangeErr        EQU         16                        ; file position beyond mapped range
  158. fxOvFlErr        EQU         17                        ; extents file overflow
  159.  
  160. ; TFS internal errors
  161.  
  162. fsDSIntErr        EQU         -127                    ; Internal file system error
  163.  
  164. ; BTree error codes
  165.  
  166. btnotfound        EQU         32                        ; record not found
  167. btexists        EQU         33                        ; record already exists
  168. btnospace        EQU         34                        ; no available space
  169. btnoFit         EQU         35                        ; record doesn't fit in node 
  170. btbadNode        EQU         36                        ; bad node detected
  171. btbadHdr        EQU         37                        ; bad BTree header record detected
  172. dsBadRotate     EQU         64                        ; bad BTree rotate
  173.  
  174. ; CM result codes
  175.  
  176. cmnotfound        EQU         48                        ; CNode not found
  177. cmexists        EQU         49                        ; CNode already exists
  178. cmnotempty        EQU         50                        ; directory CNode not empty (valence = 0)
  179. cmRootCN        EQU         51                        ; invalid reference to root CNode
  180. cmbadnews        EQU         52                        ; detected bad catalog structure
  181.  
  182.  
  183. ;
  184. ; extent key record (prefix xkr)
  185. ;
  186. xkrKeyLen        EQU         0                        ; key length (byte)
  187. xkrFkType        EQU         1                        ; fork type (byte)
  188. ; $00 = data fork
  189. ; $FF = resource fork
  190. xkrFNum         EQU         2                        ; file number (long)
  191. xkrFABN         EQU         6                        ; starting file allocation block number (word)
  192. lenxkr            EQU         8                        ; length of a xkr
  193.  
  194. ;
  195. ; extent data record (prefix xdr)
  196. ;
  197. numExts         EQU         3                        ; number of extents per record
  198. lenExt            EQU         4                        ; length of an extent entry
  199. maxExtOff        EQU         lenExt*numExts-lenExt    ; max extent entry offset
  200. xdrStABN        EQU         0                        ; starting physical allocation block number (word)
  201. xdrNumABlks     EQU         2                        ; number of allocation blocks (word)
  202. lenxdr            EQU         12                        ; length of a xdr (3 extent entries)
  203.  
  204. ;
  205. ; FXM variables (FXVars) storage layout
  206. ;
  207. fxvFlags        EQU         0                        ; FXM Flags (byte)
  208. fxvTContig        EQU         6                        ; ...try contiguous allocation first
  209. fxvFContig        EQU         7                        ; ...force contiguous allocation
  210. fxvResrv        EQU         1                        ; reserved (byte)
  211. fxvxkrOff        EQU         2                        ; offset to extent key record
  212. fxvxdrOff        EQU         fxvxkrOff+lenxkr        ; offset to extent data record
  213. lenFXVars        EQU         fxvxdrOff+lenxdr        ; length of FXM vars
  214.  
  215.  
  216.  
  217. ;
  218. ; Cache Queue header (prefix cqh)
  219. ;
  220. cqhFlink        EQU         0                        ; (long) forward link pointer
  221. cqhBlink        EQU         4                        ; (long) backward link pointer
  222. cqhNumBuf        EQU         8                        ; (word) number of buffers
  223. cqhBufSize        EQU         10                        ; (word) buffer size
  224. LenCQH            EQU         12                        ; length of CQH
  225. ;
  226. ; Cache Buffer Header definition (prefix cbh)
  227. ;
  228. cbhFlink        EQU         0                        ; (long) forward link
  229. cbhBlink        EQU         4                        ; (long) backward link
  230. cbhVCBPtr        EQU         8                        ; (long) VCB pointer
  231. cbhFlNum        EQU         12                        ; (long) file number
  232. cbhFRefNum        EQU         16                        ; (word) file refnum
  233. cbhDBlk         EQU         18                        ; (long) disk block number (-1 = empty)
  234. cbhFlBlk        EQU         22                        ; (long) file block number
  235. cbhFlags        EQU         26                        ; (byte) flags
  236. cbhdirty        EQU         7                        ; ...buffer dirty flag
  237. cbhinuse        EQU         6                        ; ...buffer in use flag
  238. cbhempty        EQU         5                        ; ...buffer is empty
  239. cbhFkType        EQU         27                        ; (byte) fork type
  240. ; ...$00 = data fork
  241. ; ...$FF = resource fork
  242. cbhData         EQU         28                        ; start of buffer data area
  243. lenCBH            EQU         28                        ; length of cbh
  244.  
  245. ; Local buffer equates
  246.  
  247. cobDBlk         EQU         cbhDBlk                 ; (long) disk block
  248. cobFlBlk        EQU         cbhFlBlk                ; (long) file block
  249. cobFlags        EQU         cbhFlags                ; (byte) flags (only dirty bit is used)
  250.  
  251. ; FlushCache option flags
  252.  
  253. fCtrash         EQU         0                        ; trash buffer contents after flush
  254. kFCtrash        EQU         1                        ; corresponding constant for MOVEQ load
  255.  
  256. ; GetBlock option flags
  257.  
  258. gbrelease        EQU         3                        ; release block immediately after get
  259. gbnoRead        EQU         2                        ; don't read block from disk
  260. gbexist         EQU         1                        ; get existing cache block
  261. gbRead            EQU         0                        ; read block from disk (forced read)
  262. kGBrelease        EQU         8                        ; corresponding constants for MOVEQ load
  263. kGBnoRead        EQU         4                        ;
  264. kGBexist        EQU         2                        ;
  265. kGBRead         EQU         1                        ;
  266.  
  267. ; RelBlock option flags
  268.  
  269. rbdirty         EQU         2                        ; mark buffer dirty
  270. rbtrash         EQU         1                        ; trash buffer contents after release
  271. rbwrite         EQU         0                        ; force write buffer to disk
  272. kRBdirty        EQU         4                        ; corresponding constants for MOVEQ load
  273. kRBtrash        EQU         2                        ;
  274. kRBwrite        EQU         1                        ;
  275.  
  276.  
  277.  
  278. ;
  279. ; BTree constants
  280. ;
  281. btNodeSize        EQU         512                     ; default node size
  282. btMaxDepth        EQU         8                        ; max tree depth
  283.  
  284. ;
  285. ; Tree Path Record (TPR)
  286. ;
  287. tprNodeN        EQU         0                        ; node number (long)
  288. tprRIndx        EQU         4                        ; record index (word)
  289. lenTPR            EQU         6                        ; length of TPR
  290. lenTPT            EQU         lenTPR*btMaxDepth        ; length of Tree Path Table
  291.  
  292. ;
  293. ; Node Descriptor (prefix nd)
  294. ;
  295. ndFlink         EQU         0                        ; forward link (long)
  296. ndBlink         EQU         4                        ; backward link (long)
  297. ndType            EQU         8                        ; node type (byte)
  298. ndHdrNode        EQU         1                        ; ...header node
  299. ndMapNode        EQU         2                        ; ...map node
  300. ndIndxNode        EQU         0                        ; ...index node
  301. ndLeafNode        EQU         $FF                     ; ...leaf node
  302. ndNHeight        EQU         9                        ; node height
  303. ndNRecs         EQU         10                        ; number of records (word)
  304. ndResv2         EQU         12                        ; reserved (word)
  305. lenND            EQU         14                        ; length of node descriptor
  306.  
  307. ;
  308. ; BTree Header (bth) on disk
  309. ;
  310. bthDepth        EQU         0                        ; current depth of tree (word)
  311. bthRoot         EQU         2                        ; root node number (long)
  312. bthNRecs        EQU         6                        ; number of leaf records in BTree (long)
  313. bthFNode        EQU         10                        ; node number of 1st leaf node (long)
  314. bthLNode        EQU         14                        ; node number of last leaf node (long)
  315. bthNodeSize     EQU         18                        ; BTree node size in bytes (word)
  316. bthKeyLen        EQU         20                        ; Max. key length (word)
  317. bthNNodes        EQU         22                        ; total number of nodes (long)
  318. bthFree         EQU         26                        ; number of free nodes (long)
  319. lenMemBTH        EQU         30                        ; length of memory resident portion of BTH
  320. ;
  321. bthResv         EQU         30                        ; reserved (76 bytes)
  322. LenBTH            EQU         106                     ; length of a BTH
  323. ;
  324. ; BTree Control Block (btcB) in memory
  325. ;
  326. btcFlags        EQU         0                        ; flags (byte)
  327. btcDirty        EQU         7                        ; ...dirty flag
  328. btcKeyUpd        EQU         6                        ; ...index key update required
  329. btcNewIRec        EQU         5                        ; ...new index record required
  330. btcDelIRec        EQU         4                        ; ...index record delete required
  331. btcResv         EQU         1                        ; reserved (byte)
  332. btcRefNum        EQU         2                        ; file refnum (word)
  333. btcKeyCR        EQU         4                        ; pointer to ext key compare routine (long)
  334. btcCQPtr        EQU         8                        ; pointer to cache queue (long)
  335. btcVarPtr        EQU         12                        ; pointer to BTree variables (long)
  336. btcLevel        EQU         16                        ; current level (word)
  337. btcNodeM        EQU         18                        ; current node mark (long)
  338. btcIndexM        EQU         22                        ; current index mark (word)
  339. ;
  340. ; this part of a btcB is the memory resident portion of the BTH
  341. ;
  342. btcDepth        EQU         24                        ; current depth of tree (word)
  343. btcRoot         EQU         26                        ; root node number (long)
  344. btcNRecs        EQU         30                        ; number of leaf records in BTree (long)
  345. btcFNode        EQU         34                        ; node number of 1st leaf node (long)
  346. btcLNode        EQU         38                        ; node number of last leaf node (long)
  347. btcNodeSize     EQU         42                        ; BTree node size in bytes (word)
  348. btcKeyLen        EQU         44                        ; max key length (word)
  349. btcNNodes        EQU         46                        ; total number of nodes (long)
  350. btcFree         EQU         50                        ; number of free nodes (long)
  351. LenBTCB         EQU         54                        ; length of a BTCB
  352.  
  353. ;
  354. ; BTree Variables (btVars) layout
  355. ;
  356. btVTPTable        EQU         0                        ; Tree Path Table
  357. btVRecord        EQU         btVTPTable+lenTPT        ; record buffer
  358.  
  359.  
  360.  
  361. ;
  362. ; constants
  363. ;
  364. cmMaxKey        EQU         37                        ; max catalog key length
  365. cmMaxCName        EQU         31                        ; max CName length
  366. cmClpSize        EQU         20                        ; catalog clump size
  367. ;
  368. ; CNode types
  369. ;
  370. cmDirCN         EQU         1                        ; directory CNode
  371. cmFilCN         EQU         2                        ; file CNode
  372. ;
  373. ; catalog key record (prefix ckr)
  374. ;
  375. ckrKeyLen        EQU         0                        ; key length (byte)
  376. ckrResrv1        EQU         1                        ; reserved (byte)
  377. ckrParID        EQU         2                        ; parent directory ID (long)
  378. ckrCName        EQU         6                        ; CNode name (str31)
  379. lenckr            EQU         38                        ; length of a ckr
  380.  
  381. ;
  382. ; catalog data record (prefix cdr)
  383. ;
  384. cdrType         EQU         0                        ; record type (byte)
  385. cdrResrv2        EQU         1                        ; reserved (byte)
  386. cdrData         EQU         2                        ; start of catalog record data
  387.  
  388. ;
  389. ; catalog data record types (variants)
  390. ;
  391. cdrDirRec        EQU         cmDirCN                 ; directory record (directory CNode type)
  392. cdrFilRec        EQU         cmFilCN                 ; file record (file CNode type)
  393. cdrThdRec        EQU         3                        ; thread record
  394.  
  395. ;
  396. ; catalog directory record (prefix dir)
  397. ;
  398. dirFlags        EQU         2                        ; flags(word)
  399. dirVal            EQU         4                        ; valence (word)
  400. dirDirID        EQU         6                        ; DirID for this directory (long)
  401. dirCrDat        EQU         10                        ; date/time created (long)
  402. dirMdDat        EQU         14                        ; date/time last modified (long)
  403. dirBkDat        EQU         18                        ; date/time last backed up (long)
  404. dirUsrInfo        EQU         22                        ; User info bytes (16 bytes)
  405. dirFndrInfo     EQU         38                        ; Finder Info bytes (16 bytes)
  406. dirResrv        EQU         54                        ; reserved (16 bytes)
  407. lendir            EQU         70                        ; length of a directory record
  408.  
  409. ;
  410. ; catalog thread record (prefix thd)
  411. ;
  412. thdResrv        EQU         2                        ; reserved (8 bytes)
  413. thdParID        EQU         10                        ; Parent ID for this directory (long)
  414. thdCName        EQU         14                        ; CName for this directory (str31)
  415. lenthd            EQU         46                        ; length of a thread record
  416.  
  417. ;
  418. ; catalog file record (prefix fil)
  419. ;
  420.  
  421. filWrtFlag        EQU         0                        ; write-allowed bit in flags byte (0 if allowed)
  422. filTypMask        EQU         $FE                     ; (user file-type in bits 1-7)
  423. filFlags        EQU         2                        ; bit 7=1 (used), bit 0=file lock flag
  424. filTyp            EQU         3                        ; file type (used as a name extension)
  425. filUsrWds        EQU         4                        ; user words for file. (16 bytes)
  426. filFlNum        EQU         20                        ; file number
  427. filStBlk        EQU         24                        ; Start file block (alloc blk size)(0000 if none)
  428. filLgLen        EQU         26                        ; File logical length in bytes (EOF)
  429. filPyLen        EQU         30                        ; File physical length in bytes
  430. filRStBlk        EQU         34                        ; Start file block, resource fork (0000 if none)
  431. filRLgLen        EQU         36                        ; File logical length (EOF), resource fork
  432. filRPyLen        EQU         40                        ; File physical length, resource fork
  433. filCrDat        EQU         44                        ; date/time created (long)
  434. filMdDat        EQU         48                        ; date/time last modified (long)
  435. filBkDat        EQU         52                        ; date/time last backed up (long)
  436. filFndrInfo     EQU         56                        ; Additional finder info for file (16 bytes)
  437. filClpSize        EQU         72                        ; file clump size (word)
  438. filExtRec        EQU         74                        ; First 3 data fork extents (12 bytes)
  439. filRExtRec        EQU         86                        ; First 3 resource fork extents (12 bytes)
  440. filResrv        EQU         98                        ; reserved (4 bytes)
  441. lenfil            EQU         102                     ; length of a file record
  442. lencdr            EQU         lenfil                    ; max length of a catalog data record
  443.  
  444. ;
  445. ; CM variables (CM vars) storage layout
  446. ;
  447. ckrOff            EQU         0                        ; offset to catalog key record buffer
  448. cdrOff            EQU         ckrOff+lenckr            ; offset to catalog data record buffer
  449. lenCMVars        EQU         lencdr+lenckr            ; length of CM vars
  450.  
  451. ; further file system equates
  452.  
  453. CkdDB            EQU         $340                    ; (2) used when searching the directory
  454. NxtDB            EQU         $342
  455. MaxDB            EQU         $344
  456. FlushOnly        EQU         $346                    ; (1) flag used by UnMountVol,FlushVol,
  457. RegRsrc         EQU         $347                    ; (1) flag used by OpenRF, FileOpen
  458. FLckUnlck        EQU         $348                    ; (1) flag used by SetFilLock,RstFilLock
  459. FrcSync         EQU         $349                    ; (1) when set, all fs calls are sync'ed
  460. RgSvArea        EQU         $36A                    ; reg save during async calls.
  461. Params            EQU         $3A4                    ; 50 bytes long. For I/O parameter blocks.
  462. FSTemp8         EQU         $3D6                    ; used by rename
  463. FSTemp4         EQU         $3DE                    ; used by rename, ckfilmod
  464. fsVrsn            EQU         '1.2A'                    ; Current file system version
  465.  
  466.  
  467.                                                         ;***ENDIF ;end exclusion of private information***
  468.  
  469. ;_______________________________________________________________
  470. ;
  471. ; External File System support traps [internal use only]
  472. ;
  473.                 Macro
  474.                 _SetupWDCB
  475.                 MOVEQ        #13,D0
  476.                 DC.W        $A260
  477.                 Endm
  478.  
  479.                 Macro
  480.                 _SetupDef
  481.                 MOVEQ        #14,D0
  482.                 DC.W        $A260
  483.                 Endm
  484.  
  485.                 Macro
  486.                 _ReadWDCB
  487.                 MOVEQ        #15,D0
  488.                 DC.W        $A260
  489.                 Endm
  490.